﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CDStore3Tiers;

namespace CuaHangDiaNhac
{
    public partial class frmDanhSachBaiHat_DiaNhac : DevComponents.DotNetBar.Office2007Form
    {
        log4net.ILog log = log4net.LogManager.GetLogger("Danh sách bài hát");
        StoreCDDataContext db ;
        XuLyDiaNhac XLDN = new XuLyDiaNhac();
        DataGridViewTextBoxColumn coMaBH;
        DataGridViewTextBoxColumn coTenBH;
        DataGridViewTextBoxColumn coCaSi;
        DataGridViewTextBoxColumn coNhacSi;
        DataGridViewTextBoxColumn coHot;
        DataGridViewTextBoxColumn coMaDia;
        XuLyForm XL = new XuLyForm();
        XuLyBaiHat XLBH = new XuLyBaiHat();
        public static string ma = "";
        int madn;
        public void LoadDS(List<vwDSBaiHat> a)
        {
            //var baihat = db.BaiHat_SelectAll();
            BindingSource bh = new BindingSource();
            bh.DataSource = a;
            bindingNavigator1.BindingSource = bh;
            dgrDBH.DataSource = bh;
        }

        public void loaddgrDBH(List<vwDSBaiHat> a)
        {
            dgrDBH.DataSource = null;

            coMaDia = new DataGridViewTextBoxColumn();
            coMaDia.DataPropertyName = "MaDia";
            coMaDia.HeaderText = "Mã đĩa";
            coMaDia.Name = "cMaDia";
            coMaDia.Visible = false;
            dgrDBH.Columns.Add(coMaDia);

            coMaBH = new DataGridViewTextBoxColumn();
            coMaBH.DataPropertyName = "MaBH";
            coMaBH.HeaderText = "Mã bài hát";
            coMaBH.Name = "cMaBH";
            coMaBH.Visible = false;
            dgrDBH.Columns.Add(coMaBH);


            coTenBH = new DataGridViewTextBoxColumn();
            coTenBH.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coTenBH.DataPropertyName = "TenBH";
            coTenBH.HeaderText = "Tên bài hát";
            coTenBH.Name = "cTenBH";
            dgrDBH.Columns.Add(coTenBH);


            coCaSi = new DataGridViewTextBoxColumn();
            coCaSi.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coCaSi.DataPropertyName = "CaSi";
            coCaSi.HeaderText = "Ca sĩ";
            coCaSi.Name = "cCaSi";
            dgrDBH.Columns.Add(coCaSi);


            coNhacSi = new DataGridViewTextBoxColumn();
            coNhacSi.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coNhacSi.DataPropertyName = "NhacSi";
            coNhacSi.HeaderText = "Nhạc sĩ";
            coNhacSi.Name = "cNhacSi";
            dgrDBH.Columns.Add(coNhacSi);


            coHot = new DataGridViewTextBoxColumn();
            coHot.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coHot.DataPropertyName = "Hot";
            coHot.HeaderText = "Độ hot";
            coHot.Name = "cHot";
            coHot.Visible = false;
            dgrDBH.Columns.Add(coHot);

            LoadDS(a);

        }
        public frmDanhSachBaiHat_DiaNhac(int maso)
        {
            InitializeComponent();
            db = new StoreCDDataContext();
            db.Connection.ConnectionString = getConfig.getConnection();
            Getdata(maso);
            madn = maso;
        }
        public void Getdata(int maso)
        {
            try
            {
                var bh = db.BaiHat_DiaNhac_SelectByid(maso);
                if (bh != null)
                {
                    List<vwDSBaiHat> ct = XLDN.GetDSBH(maso);
                    dgrDBH.DataSource = ct;
                    loaddgrDBH(ct);
                }
            }
            catch (Exception)
            {
                dgrDBH.DataSource = null;
            }
        }
        private void frmDanhSachBaiHat_DiaNhac_Load(object sender, EventArgs e)
        {
            db = new StoreCDDataContext();
            db.Connection.ConnectionString = getConfig.getConnection();
            string tendia = XLDN.TenDN(madn);
            log.Info(frmLogin.id + ": đã load lên danh sách bài hát của đĩa nhạc "+tendia);
        }


        private void dgrDBH_DataSourceChanged(object sender, EventArgs e)
        {
        }

        private void tsDelete_Click(object sender, EventArgs e)
        {
            BaiHat bh = new BaiHat();
            string listbh = "";
            foreach (DataGridViewRow r in dgrDBH.SelectedRows)
            {
                string tenbh = r.Cells["cTenBH"].Value.ToString();
                string casi = r.Cells["cCaSi"].Value.ToString();
                listbh += "\n" + tenbh + " - " + casi;
            }
            DialogResult accept = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn (những) bài hát sau xóa khỏi đĩa nhạc ? "+listbh, "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (accept == DialogResult.Yes)
            {
                try
                {
                    for (int i = 0; i < dgrDBH.SelectedRows.Count; i++)
                    {

                        int ma = Convert.ToInt32(dgrDBH.SelectedRows[i].Cells["cMaBH"].Value.ToString());
                        string tenbh = dgrDBH.SelectedRows[i].Cells["cTenBH"].Value.ToString();
                        var del = db.BaiHat_DiaNhac_Delete(Convert.ToInt32(lbX.Text), ma);
                        db.SubmitChanges();
                        string tendia = XLDN.TenDN(ma);
                        log.Info(frmLogin.id + ": đã xóa bài hát " + tenbh + " ra khỏi đĩa nhạc " + tendia);
                    }
                }
                catch (Exception)
                {
                    log.Error(frmLogin.id + ": xóa bài hát ra khỏi đĩa nhạc thất bại");
                }


            }
            Getdata(Convert.ToInt32(lbX.Text));

            //if (dgrDBH.SelectedRows.Count > 0)
            //{
            //    foreach (DataGridViewRow r in dgrDBH.SelectedRows)
            //    {
            //        int ma = Convert.ToInt32(r.Cells["cMaBH"].Value.ToString());
            //        DialogResult z = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn muốn xóa bài hát này ra khỏi đĩa nhạc?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            //        if (z == DialogResult.Yes)
            //        {
            //            var del = db.BaiHat_DiaNhac_Delete(Convert.ToInt32(lbX.Text), ma);
            //            db.SubmitChanges();
            //            DevComponents.DotNetBar.MessageBoxEx.Show("Xóa bài hát ra khỏi đĩa nhạc thành công");
            //            Getdata(Convert.ToInt32(lbX.Text));
            //        }
            //    }

            //}


            //for (int i = 0; i < dgrDBH.SelectedRows.Count; i++)
            //{
            //    try
            //    {
            //        int selectMaSK = Convert.ToInt32(dataGridViewX1.SelectedRows[i].Cells["cnameMaSK"].Value.ToString());
            //        int selectMaDia = Convert.ToInt32(dataGridViewX1.SelectedRows[i].Cells["cnameMaDia"].Value.ToString());
            //        DialogResult accept = DevComponents.DotNetBar.MessageBoxEx.Show("Xoá đĩa nhạc có mã số " + selectMaDia + " khỏi sự kiện ? ", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            //        if (accept == DialogResult.Yes)
            //        {
            //            var xoa = db.DSGiamGia_Delete(selectMaSK, selectMaDia);
            //            db.SubmitChanges();
            //        }
            //    }
            //    catch (Exception)
            //    {
            //    }

            //}
            //LoadDGV(idsukien);


        }

        private void tsRefesh_Click(object sender, EventArgs e)
        {
            Getdata(Convert.ToInt32(lbX.Text));
        }

        private void tsSave_Click(object sender, EventArgs e)
        {
            try
            {
                XLBH.updateBaiHat(dgrDBH);
            }
            catch (Exception Ex)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show(Ex.Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
            Getdata(Convert.ToInt32(lbX.Text));
        }

        private void tsTimkiem_MouseLeave(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tsTimkiem.Text))
            {
                tsTimkiem.Text = "Tìm kiếm theo tên bài hát";
                XL.loadDGV(bindingNavigator1, dgrDBH, null);
                Getdata(Convert.ToInt32(lbX.Text));
            }
        }

        private void tsTimkiem_TextChanged(object sender, EventArgs e)
        {
            dgrDBH.DataSource = from n in db.vwDSBaiHats
                                where n.TenBH.ToString().ToLower().Contains(tsTimkiem.Text.ToLower()) && n.MaDia == Convert.ToInt32(lbX.Text)
                                //|| n.TenBH.ToLower().Contains(tsTimkiem.Text.ToLower())
                                select n;
        }

        private void tsTimkiem_MouseUp(object sender, MouseEventArgs e)
        {
            tsTimkiem.Clear();
        }

        private void frmDanhSachBaiHat_DiaNhac_Activated(object sender, EventArgs e)
        {
            if (this.Owner != null)
            {
                this.Owner.Enabled = false;
            }
        }

        private void frmDanhSachBaiHat_DiaNhac_Deactivate(object sender, EventArgs e)
        {
            if (this.Owner != null)
            {
                this.Owner.Enabled = true;
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            navigationPane1.Expanded = true;
            //expandablePanel1.Expanded = true;
        }

        private void dgrDBH_MouseDown(object sender, MouseEventArgs e)
        {
            DataGridView.HitTestInfo hit;
            hit = dgrDBH.HitTest(e.X, e.Y);

            //đối tượng cho biết thông tin hit trên datagridview
            if (e.Button == MouseButtons.Right)
            { //bắt sự kiện chuột phải
                //tạo đối tượng HTi
                if (hit.Type == DataGridViewHitTestType.Cell)
                {//Kiểm tra xem đối tượng HTi có đúng là kiểu Cell không
                    if (!((DataGridViewRow)(dgrDBH.Rows[hit.RowIndex])).Selected)
                    {//kiểm tra xem row tại vị trí chuột có đúng là chưa chọn
                        dgrDBH.ClearSelection();//xóa chọn tất cả trên datagrid
                        ((DataGridViewRow)dgrDBH.Rows[hit.RowIndex]).Selected = true;//xác lập chọn cho row tại vị trí nhấn chuột                      
                    }
                }
            }
            //ratingItem1.RatingValue = dgv.Rows[hit.RowIndex].Cells["cHot"].Value.ToString();


            //if (ratingItem1_RatingChanged(sender,e))
            //{
            //    string m = dgv.Rows[hit.RowIndex].Cells["cHot"].Value.ToString();
            //    DevComponents.DotNetBar.MessageBoxEx.Show(m);
            //}
            if (dgrDBH.SelectedRows.Count > 1)
                lockContextmenu(false);
            else
            {
                lockContextmenu(true);
                //DevComponents.DotNetBar.MessageBoxEx.Show(e.X + "  " + e.Y);
            }
        }

        private void lockContextmenu(bool p)
        {
            //btnF5.Enabled = p;
            //btnSave.Enabled = p;
            //btnThem.Enabled = p;
            //btnXoa.Enabled = p;
        }

        private void btnTS_Click(object sender, EventArgs e)
        {
            ma = lbX.Text.ToString(); ;
            frmGetDSDN na = new frmGetDSDN();
            na.ShowDialog(this.Owner);
            Getdata(Convert.ToInt32(lbX.Text));
        }

        private void btnThemBH_Click(object sender, EventArgs e)
        {
            BaiHat bh = new BaiHat();

            try
            {

                //try
                //{
                if (txtTenBH.Text.Trim() != "")
                {
                    string a = XLBH.TenBH(txtTenBH.Text);
                    if (a == "")
                    {
                        //bh.MaBH = Convert.ToInt32(txtMaBH.Text.ToString());
                        bh.TenBH = txtTenBH.Text.ToString();
                        bh.CaSi = txtCS.Text.ToString();
                        bh.NhacSi = txtNS.Text.ToString();
                        //bh.Hot = Convert.ToInt32(cbbHot.Text.ToString());
                        db.BaiHats.InsertOnSubmit(bh);
                        db.SubmitChanges();
                        DevComponents.DotNetBar.MessageBoxEx.Show("Thêm bài hát thành công!" + a);
                    }
                    else
                    {
                        if (txtCS.Text.Trim() != "")
                        {
                            if (XLBH.CaSi(a, txtCS.Text) == 0)
                            {
                                bh.TenBH = txtTenBH.Text.ToString();
                                bh.CaSi = txtCS.Text.ToString();
                                bh.NhacSi = txtNS.Text.ToString();
                                // bh.Hot = Convert.ToInt32(cbbHot.Text.ToString());
                                db.BaiHats.InsertOnSubmit(bh);
                                db.SubmitChanges();
                                var zz = XLBH.GetlastMaBH();
                                BaiHat_DiaNhac aa = new BaiHat_DiaNhac();
                                aa.MaBH = zz;
                                aa.MaDia = Convert.ToInt32(lbX.Text);
                                db.BaiHat_DiaNhacs.InsertOnSubmit(aa);
                                db.SubmitChanges();
                                Getdata(Convert.ToInt32(lbX.Text));
                                DevComponents.DotNetBar.MessageBoxEx.Show("Thêm bài hát thành công!");
                            }
                            else
                            {
                                DevComponents.DotNetBar.MessageBoxEx.Show("Đã có bài hát này trong danh sách!");
                            }
                        }
                        else
                        {
                            DevComponents.DotNetBar.MessageBoxEx.Show("Vui lòng nhập ca sĩ thể hiện!");
                        }
                    }

                }
                else
                {
                    DevComponents.DotNetBar.MessageBoxEx.Show("Vui lòng nhập tên bài hát!");
                }
            }
            catch
            {
                DevComponents.DotNetBar.MessageBoxEx.Show("Xảy ra lỗi trong quá trình thêm bài hát!\nXin vui lòng nhập đúng thông tin!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

